package core

type T struct {
	SX130XConf struct {
		ComType       string `json:"com_type"`
		ComPath       string `json:"com_path"`
		LorawanPublic bool   `json:"lorawan_public"`
		Clksrc        int    `json:"clksrc"`
		AntennaGain   int    `json:"antenna_gain"`
		FullDuplex    bool   `json:"full_duplex"`
		FineTimestamp struct {
			Enable bool   `json:"enable"`
			Mode   string `json:"mode"`
		} `json:"fine_timestamp"`
		Radio0 struct {
			Enable          bool    `json:"enable"`
			Type            string  `json:"type"`
			SingleInputMode bool    `json:"single_input_mode"`
			Freq            int     `json:"freq"`
			RssiOffset      float64 `json:"rssi_offset"`
			RssiTcomp       struct {
				CoeffA int     `json:"coeff_a"`
				CoeffB int     `json:"coeff_b"`
				CoeffC float64 `json:"coeff_c"`
				CoeffD float64 `json:"coeff_d"`
				CoeffE int     `json:"coeff_e"`
			} `json:"rssi_tcomp"`
			TxEnable  bool `json:"tx_enable"`
			TxFreqMin int  `json:"tx_freq_min"`
			TxFreqMax int  `json:"tx_freq_max"`
			TxGainLut []struct {
				RfPower int `json:"rf_power"`
				PaGain  int `json:"pa_gain"`
				PwrIdx  int `json:"pwr_idx"`
			} `json:"tx_gain_lut"`
		} `json:"radio_0"`
		Radio1 struct {
			Enable          bool    `json:"enable"`
			Type            string  `json:"type"`
			SingleInputMode bool    `json:"single_input_mode"`
			Freq            int     `json:"freq"`
			RssiOffset      float64 `json:"rssi_offset"`
			RssiTcomp       struct {
				CoeffA int     `json:"coeff_a"`
				CoeffB int     `json:"coeff_b"`
				CoeffC float64 `json:"coeff_c"`
				CoeffD float64 `json:"coeff_d"`
				CoeffE int     `json:"coeff_e"`
			} `json:"rssi_tcomp"`
			TxEnable bool `json:"tx_enable"`
		} `json:"radio_1"`
		ChanMultiSFAll struct {
			SpreadingFactorEnable []int `json:"spreading_factor_enable"`
		} `json:"chan_multiSF_All"`
		ChanMultiSF0 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_0"`
		ChanMultiSF1 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_1"`
		ChanMultiSF2 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_2"`
		ChanMultiSF3 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_3"`
		ChanMultiSF4 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_4"`
		ChanMultiSF5 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_5"`
		ChanMultiSF6 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_6"`
		ChanMultiSF7 struct {
			Enable bool `json:"enable"`
			Radio  int  `json:"radio"`
			If     int  `json:"if"`
		} `json:"chan_multiSF_7"`
		ChanLoraStd struct {
			Enable                bool `json:"enable"`
			Radio                 int  `json:"radio"`
			If                    int  `json:"if"`
			Bandwidth             int  `json:"bandwidth"`
			SpreadFactor          int  `json:"spread_factor"`
			ImplicitHdr           bool `json:"implicit_hdr"`
			ImplicitPayloadLength int  `json:"implicit_payload_length"`
			ImplicitCrcEn         bool `json:"implicit_crc_en"`
			ImplicitCoderate      int  `json:"implicit_coderate"`
		} `json:"chan_Lora_std"`
		ChanFSK struct {
			Enable    bool `json:"enable"`
			Radio     int  `json:"radio"`
			If        int  `json:"if"`
			Bandwidth int  `json:"bandwidth"`
			Datarate  int  `json:"datarate"`
		} `json:"chan_FSK"`
	} `json:"SX130x_conf"`
	GatewayConf struct {
		GatewayID          string `json:"gateway_ID"`
		ServerAddress      string `json:"server_address"`
		ServPortUp         int    `json:"serv_port_up"`
		ServPortDown       int    `json:"serv_port_down"`
		KeepaliveInterval  int    `json:"keepalive_interval"`
		StatInterval       int    `json:"stat_interval"`
		PushTimeoutMs      int    `json:"push_timeout_ms"`
		ForwardCrcValid    bool   `json:"forward_crc_valid"`
		ForwardCrcError    bool   `json:"forward_crc_error"`
		ForwardCrcDisabled bool   `json:"forward_crc_disabled"`
		BeaconPeriod       int    `json:"beacon_period"`
		BeaconFreqHz       int    `json:"beacon_freq_hz"`
		BeaconDatarate     int    `json:"beacon_datarate"`
		BeaconBwHz         int    `json:"beacon_bw_hz"`
		BeaconPower        int    `json:"beacon_power"`
		BeaconInfodesc     int    `json:"beacon_infodesc"`
	} `json:"gateway_conf"`
	DebugConf struct {
		RefPayload []struct {
			Id string `json:"id"`
		} `json:"ref_payload"`
		LogFile string `json:"log_file"`
	} `json:"debug_conf"`
}
